package com.example.yingpianguangli.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.Objects;
@Data // 提供所有的getter和setter, equals, canEqual, hashCode 和 toString 方法
@NoArgsConstructor // 提供无参构造函数
@AllArgsConstructor // 提供全参构造函数
// 系统用户类，实现序列化接口以支持对象的序列化和反序列化
public class SysUser implements Serializable {
    // 序列化ID，用于版本控制和兼容性校验
    private final static Long serialVersionUID = 1L;

    // 用户唯一标识符
    private Long userId;

    // 用户名，不能为空，用于用户登录和身份识别
    @NotBlank(message = "用户名不能为空")
    private String userName;

    // 用户密码，不能为空，用于保护用户账户安全
    @NotBlank(message = "密码不能为空")
    private String password;

    // 密码盐值，用于增加密码安全性，防止彩虹表攻击
    private String salt;

    // 用户邮箱，必须符合邮箱格式，用于用户信息验证和找回密码等功能
    @Email(message = "邮箱格式有误")
    private String email;

    // 用户电话号码，必须符合中国大陆手机号码格式，用于用户联系方式
    @Pattern(regexp = "^1[3|4|5|7|8]\\d{9}$", message = "电话号码格式有错")
    private String phoneNumber;

    // 用户性别，用于完善用户信息
    private Boolean sex;

    // 用户头像的存储路径或URL，用于展示用户形象
    private String userPicture;

    // 用户对应的角色ID，简化设计为一对一关系，用于定义用户权限
    private Long roleId;

    // 用户生日，用于完善用户个人信息
    private String birthday;

    // 用户个性签名，用于表达用户个性
    private String autograph;

    // 用户的角色对象，直接关联角色类，便于获取角色相关信息
    private SysRole sysRole;
}

